
import java.lang.reflect.Constructor;
import java.lang.reflect.Parameter;

// 利用反射创建对象
public class EmpDemo03 {

    public static void main(String[] args) {

        try {
            // 2. 反射
            // 2.1 创建class对象 ： 全限定路径名： 包名+类名
            // Class 类里 封装了 指定类的相关信息
            // 属性 + 构选器 + 方法 + 创建对象
            Class c1 = Class.forName("org.nextcore.entity.Emp");

            // 构造器： ==》 创建对象
            // 默认有一个空参构造器
            // 如果自己写了， 默认失效
            // 获取public 类型的构造 器
            // Constructor[] css1 = c1.getConstructors();
            Constructor[] css1 = c1.getDeclaredConstructors();

            // 循环构造 器
            for (Constructor ct1 : css1) {
                // 参数的个数
                int parameterCount = ct1.getParameterCount();
                System.out.println("参数的个数：" + parameterCount);

                // 参数类型列表
                Parameter[] ps1 = ct1.getParameters();
                // 循环参数列表
                for (Parameter parameter : ps1) {
                    System.out.println("参数名：" + parameter.getName() + "参数类型：" + parameter.getType().getName());
                }

                System.out.println("===================================");
            }

        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }

    }

    @Override
    public String toString() {
        return "EmpDemo03 []";
    }
}
